package com.example.candiates.service.impl;

import com.example.candiates.domain.InterviewCandidates;
import com.example.candiates.service.InterviewCandidatesService;
import com.example.candiates.service.ResumeStorageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Objects;
import java.util.Optional;

@Service
public class ResumeStorageServiceImpl implements ResumeStorageService {

//    @Value("${resume.storage.path}")
//    private String storagePath;
//
//    @Value("${resume.storage.url-prefix}")
//    private String urlPrefix;
//
//    @Autowired
//    private InterviewCandidatesService interviewCandidatesService;
//
//    @Override
//    public String storeResume(MultipartFile file, Integer candidateId) throws IOException {
//        // 参数校验
//        if (file == null || file.isEmpty()) {
//            throw new IllegalArgumentException("上传文件不能为空");
//        }
//        String originalFilename = file.getOriginalFilename();
//        if (originalFilename == null || !originalFilename.toLowerCase().endsWith(".pdf")) {
//            throw new IllegalArgumentException("仅支持PDF格式简历");
//        }
//
//        // 准备存储目录
//        Path storageDir = Paths.get(storagePath);
//        if (!Files.exists(storageDir)) {
//            Files.createDirectories(storageDir);
//        }
//
//        // 获取候选人信息
//        InterviewCandidates candidate = interviewCandidatesService.getById(candidateId);
//        if (candidate == null) {
//            throw new IllegalArgumentException("候选人不存在");
//        }
//
//        //校验必填字段
//        String candidateName = Optional.ofNullable(candidate.getName())
//                .orElseThrow(() -> new IllegalArgumentException("候选人姓名为空"));
//        String position = Optional.ofNullable(candidate.getPosition())
//                .orElseThrow(() -> new IllegalArgumentException("应聘职位为空"));
//
//        //生成标准化文件名（示例：张三_Java开发_20240417_123_1629100000000.pdf）
//        String safeName = candidateName.replaceAll("[\\\\/:*?\"<>|\\s]", "_"); // 处理非法字符和空格
//        String safePosition = position.replaceAll("[\\\\/:*?\"<>|\\s]", "_");
//        String dateStr = LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE); // YYYYMMDD格式
//
//        String newFileName = String.format("%s_%s_%s_%d_%d.pdf",
//                safeName,
//                safePosition,
//                dateStr,
//                candidateId,
//                System.currentTimeMillis());
//
//        // 存储文件
//        Path targetPath = storageDir.resolve(newFileName);
//        Files.copy(file.getInputStream(), targetPath, StandardCopyOption.REPLACE_EXISTING);
//
//        // 删除旧简历（如果存在）
//        if (candidate != null && candidate.getResumePath() != null) {
//            deleteOldResume(candidate.getResumePath());
//        }
//
//        return urlPrefix + newFileName;
//    }
//
//    @Override
//    public void deleteOldResume(String filePath) throws IOException {
//        if (filePath != null && filePath.startsWith(urlPrefix)) {
//            String fileName = filePath.substring(urlPrefix.length());
//            Path oldPath = Paths.get(storagePath, fileName);
//            Files.deleteIfExists(oldPath);
//        }
//    }
}
